package com.czxy.Demo12;

import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        //  给定的信息数组
        String[][] all = {
                //姓名  语文 数学 英语
                {"张三","37","89","5"},
                {"李四","95","41","79"},
                {"王五","60","84","29"},
                {"赵六","87","46","86"}
        };

        //  把数组内容 存放到学生集合中
        List<Studnet> list = new ArrayList<>();
        for (int i = 0; i < all.length ; i++) {
            list.add(new Studnet(all[i][0],Integer.valueOf(all[i][1]),Integer.valueOf(all[i][2]),Integer.valueOf(all[i][3])));
        }

        printMathScore(list);
        System.out.println("------------------");
        getAvgCount(list);

    }
    // 打印所有同学数学成绩
    public static void printMathScore(List<Studnet> list){
        for (Studnet studnet : list) {  //  扁你集合
            System.out.println(studnet.getName()+"的数学成绩是:"+studnet.getShuxue());    //打印信息
        }
    }

    //  获取所有同学数学成绩的总和
    public static int getCountMathScore(List<Studnet> list){
        int sum = 0;    //  定义一个累加器
        for (Studnet studnet : list) {  //  遍历集合
            sum += studnet.getShuxue(); //  累加学生的数学分数
        }
        System.out.println("数学成绩总和为:"+sum); //  打印结果
        System.out.println("------------------");
        return sum;     //  返回累加后的分数
    }

    //  获取所有同学数学成绩的平均分
    public static double getAvgMathScore(List<Studnet> list){
        int sum = getCountMathScore(list);  //  接收到数学总分

        /*
        *   数学成绩 / 学生数组的长度（学生的个数） = 数学平局分
        *   因为 平均值 可能是小数形式 ， 所以转换成 double 类型
        * */
        System.out.println("数学成绩平均分为:" + (double)sum/list.size());
        System.out.println("------------------");
        return (double)sum/list.size(); //  返回平均值
    }

    //  获取所有数学成绩超过平均分的人名
    public static int getAvgName(List<Studnet> list){
        double dou = getAvgMathScore(list);     //  接收到该方法求到的平局值
        int count = 0;  //  定义一个计数器
        for (Studnet studnet : list) {  //  遍历学生集合
            //  当该学生的数学成绩 > 平均值  那么打印该学生的信息
            if (studnet.getShuxue() > dou) {
                System.out.println(studnet.getName() + "的数学成绩是:" + studnet.getShuxue()+"  大于平均分");
                count++;        //  计数器+1
            }
        }
        System.out.println("------------------");
        return count;   //  返回的是 数学成绩大于平均分的人数
    }

    //  获取所有数学成绩高过平均分的人数
    public static void getAvgCount(List<Studnet> list){
        int avgName = getAvgName(list);     //  接收到这个大于平均分的人数
        System.out.println("大于平均分的有"+avgName+"人");  //  打印
    }
}
